rockchip: Allow socs with undefined wfe check bits
authorHeiko Stuebner <[email protected]>
Thu, 7 Mar 2019 07:01:37 +0000 (08:01 +0100)
committerHeiko Stuebner <[email protected]>
Thu, 25 Apr 2019 11:37:56 +0000 (13:37 +0200)
Some older socs like the rk3288 do not have the necessary registers
to check the wfi/wfe state of the cpu cores. Allow this case an "just"
do an additional delay similar to how the Linux kernel handles smp
right now.

Signed-off-by: Heiko Stuebner <[email protected]>
Change-Id: I0f67af388b06b8bfb4a9bac411b4900ac266a77a

plat/rockchip/common/drivers/pmu/pmu_com.h

index 4b4b00fdee856c8920c7ee180613e8249e7905c3..5359f73b45a9522eeff98bcb1f62a8c523725495 100644 (file)
@@ -88,6 +88,17 @@ static int check_cpu_wfie(uint32_t cpu_id, uint32_t wfie_msk)
                cluster_id = 0;
        }
 
+       /*
+        * wfe/wfi tracking not possible, hopefully the host
+        * was sucessful in enabling wfe/wfi.
+        * We'll give a bit of additional time, like the kernel does.
+        */
+       if ((cluster_id && clstb_cpu_wfe < 0) ||
+           (!cluster_id && clstl_cpu_wfe < 0)) {
+               mdelay(1);
+               return 0;
+       }
+
        if (cluster_id)
                wfie_msk <<= (clstb_cpu_wfe + cpu_id);
        else